package cn.tedu.charging.user.controller;

import cn.tedu.charging.common.pojo.vo.UserDetailVO;
import cn.tedu.charging.user.common.JsonResult;
import cn.tedu.charging.user.pojo.param.LoginParam;
import cn.tedu.charging.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 用户模块的控制器类
 * <p>
 * 在这个类里 定义接口
 * 接口的定义的几个元素
 * 1 调用方式 GET @GetMapping POST PUT DELETE OPTIONS http协议规定的调用方式
 * 2 地址 /user/detail
 * 3 入参 Integer id
 * 4 出参 返回值 String
 *
 * @RestController 注解 表示  这个类是一个控制器类
 */
@Slf4j
@RequestMapping("/user")
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 用户详情
     * 通过 用户id 获取用户信息 比如 昵称 性别 ...
     * @PathVariable 注解获取路径参数 /user/detail/{id}  user/detail/123  id  123
     */
    @GetMapping("/detail/{id}")
    public JsonResult detail(@PathVariable("id") Integer id) {
        log.debug("控制层-Controller 用户详情,入参:{}", id);
        UserDetailVO userDetailVO = userService.detail(id);
        JsonResult jsonResult = JsonResult.ok(userDetailVO);
        log.debug("控制层-Controller 用户详情 用户详情,入参:{},出参:{}", id, jsonResult);
        return jsonResult;
    }
    /**
     * 登录接口
     * 通过 用户名 和 密码 登录 获取用户的id
     *@RequestBody 请求体,注解获取路径参数
     */
    @PostMapping("/login")
    public JsonResult login(@RequestBody LoginParam loginParam) {
        log.debug("控制层-Controller 登录,入参:{}",loginParam);
        Integer userId = userService.login(loginParam);
        JsonResult jsonResult = JsonResult.ok(userId);
        log.debug("控制层-Controller 登录 ,入参:{},出参:{}",loginParam,jsonResult);
        return jsonResult;
    }

}